Package com.odb.view.core

Source Code of com.odb.view.core.ActionProcessor

/*******************************************************************************
* Copyright (c) 2012, Nabeel Shaheen 
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted
******************************************************************************/
package com.odb.view.core;

import java.security.GeneralSecurityException;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.Logger;
import org.icepush.PushContext;
import org.springframework.web.context.WebApplicationContext;

import com.odb.core.dao.dto.SubscriberInfo;
import com.odb.core.service.OpenDashBoard;
import com.odb.core.service.exceptions.InvalidAuthenticationException;
import com.odb.view.dashboard.client.Dashboard;
import com.odb.view.dashboard.client.DashboardService;
import com.odb.view.util.Utilities;

/**
* The Class ActionProcessor.
*
* This class is the delegation class for the {@link DashboardController} to
* handle each request and decide which navigation is next
*
* this class receives a reference of the {@link OpenDashBoard} service to call
* the perform the system functions.
*
*/
public class ActionProcessor {

  /** The log. */
  private static Logger log = Logger.getLogger(ActionProcessor.class);

  /** The odb core. */
  private OpenDashBoard odbCore;

  /**
   * Instantiates a new action processor.
   *
   * @param applicationContext
   *            the application context
   */
  public ActionProcessor(WebApplicationContext applicationContext) {
    this.odbCore = (OpenDashBoard) applicationContext.getBean("OpenDashBoardCore");
  }

  /**
   * Execute action.
   *
   * this is the main method for the {@link ActionProcessor} class, it takes
   * an action string and then decide which action to perform.
   *
   * @param action
   *            the action string
   * @param request
   *            the httprequest
   * @param response
   *            the httpresponse
   * @return a string used to decide which navigation is next
   */
  public String executeAction(String action, HttpServletRequest request, HttpServletResponse response) {
    if ("login".equals(action)) {
      return loginAction(request, response);
    } else if ("publish".equals(action)) {
      return firePushEventAction(request, response);
    }
    return null;
  }

  /**
   * Fire push event action for the given dataSourceId.
   *
   * this causes the {@link DashboardService#getDataUpdate(String, String)} to
   * be called for the specified datasourceId and causes the Chart to be
   * updated with the new data
   *
   * @param request
   *            the request
   * @param response
   *            the response
   * @return a string used to decide which navigation is next
   *
   * @see OpenDashBoard#publish(String)
   * @see Dashboard#onModuleLoad()
   */
  public String firePushEventAction(HttpServletRequest request, HttpServletResponse response) {
    String dataSourceId = null;
    try {
      dataSourceId = request.getParameter("dataSourceId");
      PushContext pushContext = PushContext.getInstance(request.getSession().getServletContext());
      pushContext.push(dataSourceId);
      response.setStatus(HttpServletResponse.SC_OK);
    } catch (Exception e) {
      log.error("error while firing Push Event for dataSourceId: " + dataSourceId, e);
      response.setStatus(HttpServletResponse.SC_CONFLICT);
    }
    return null;
  }

  /**
   * Login action.
   *
   * @param request
   *            the request
   * @param response
   *            the response
   * @return a string used to decide which navigation is next
   */
  public String loginAction(HttpServletRequest request, HttpServletResponse response) {

    String username = request.getParameter("username");
    String password = request.getParameter("password");
    SubscriberInfo subscriberInfo;
    try {
      subscriberInfo = odbCore.subscriberLogin(username, Utilities.encrypt(password));
      request.getSession().setAttribute("subscriberInfo", subscriberInfo);
    } catch (InvalidAuthenticationException e) {
      log.error("", e);
      return "loginError";
    } catch (GeneralSecurityException e) {
      log.error("", e);
      return "loginError";
    } catch (Exception e) {
      log.error("", e);
      return "loginError";
    }
    return "Dashboard";
  }
}
TOP

Related Classes of com.odb.view.core.ActionProcessor

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.